package com.example.demo.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.example.demo.entity.Role;
import com.example.demo.result.Result;

import java.util.List;

public interface RoleService extends IService<Role> {

    /**
     * 获取所有热门角色数据，用于首页展示
     * @return 热门角色列表
     */
    Result<List<Role>> getPopularRoles();

    /**
     * 根据分类获取角色列表
     * @param category 角色分类
     * @return 角色列表
     */
    Result<List<Role>> getRolesByCategory(String category);

    /**
     * 根据用户ID获取该用户创建的角色
     * @param userId 用户ID
     * @return 角色列表
     */
    Result<List<Role>> getRolesByUserId(Long userId);

    /**
     * 获取所有公开角色
     * @return 所有公开角色列表
     */
    Result<List<Role>> getAllPublicRoles();

    /**
     * 根据角色ID获取角色的voice配置
     * @param roleId 角色ID
     * @return 角色的voice配置
     */
    Result<String> getRoleVoiceByRoleId(Long roleId);

    /**
     * 根据用户ID查询其拥有的所有角色（通过用户角色关联表）
     * @param userId 用户ID
     * @return 用户拥有的角色列表
     */
    Result<List<Role>> getOwnedRolesByUserId(Long userId);
}